home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
tools
/
sharp
/
sxwork2.lzh
/
サンプル基礎編
/
文字印字
/
CPRINT.C
< prev
next >
Wrap
Text File
|
1994-02-20
|
5KB
|
139 lines
/******************************************************************************
* cprint.c: 印刷処理関数
******************************************************************************
* Workroom SX-68K Sample Program Copyright 1994 SHARP
*/
#include <stdio.h>
#include <sxmemory.h> /* メモリマンを利用するときに必要 */
#include <sxgraph.h> /* グラフ系マネージャを利用するときに必要 */
#include <control.h> /* コントロールマンを利用するときに必要 */
#include <dialog.h> /* ダイアログマンを利用するときに必要 */
#include <print.h> /* プリントマンを利用するときに必要 */
#include "cprint.h" /* このプログラム固有のヘッダファイル */
/******************************************************************************
* createPrint(): プリントレコードの作成
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
* 戻り値: BOOLEAN = TRUE: 作成成功
* = FALSE: 作成失敗
*/
BOOLEAN createPrint(ComVal *pcv)
{
int errCode;
/* プリントハンドルを確保する */
pcv->printHdl = MMChHdlNew(sizeof(Print));
if (pcv->printHdl == NULL) {
pcv->errorCode = 8; /* 確保できなかった */
return FALSE; /* 失敗したのでFALSEを返す */
}
/* デフォルトのプリンタドライバをオープンする */
errCode = PMOpen(P_DEFAULT);
if (errCode < 0 && errCode != -2) {
pcv->errorCode = 14; /* ドライバが異常 */
return FALSE;
}
PMSetDefault(pcv->printHdl); /* プリントレコードに初期値を設定する */
PMClose(); /* プリンタドライバをクローズする */
return TRUE; /* 成功したのでTRUEを返す */
}
/******************************************************************************
* setPrint(): 印刷環境設定ダイアログのオープン
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void setPrint(ComVal *pcv)
{
int errCode;
/* デフォルトのプリンタドライバをオープンする */
errCode = PMOpen(P_DEFAULT);
if (errCode < 0) {
if (errCode == -2)
pcv->errorCode = 13; /* 他のタスクが使用中 */
else
pcv->errorCode = 14; /* ドライバが異常 */
} else {
/* 印刷環境設定ダイアログを表示する */
PMImageDialog(pcv->printHdl);
PMClose(); /* プリンタドライバをクローズする */
}
}
/******************************************************************************
* printProc(): 印刷処理の実行
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
* 戻り値: BOOLEAN = TRUE: 印刷成功
* = FALSE: 印刷失敗
*/
BOOLEAN printProc(ComVal *pcv)
{
int errCode;
Graph *lastGraph;
/* デフォルトのプリンタドライバをオープンする */
errCode = PMOpen(P_DEFAULT);
if (errCode < 0) {
if (errCode == -2)
pcv->errorCode = 13; /* 他のタスクが使用中 */
else
pcv->errorCode = 14; /* ドライバが異常 */
return FALSE;
}
/* [印刷環境設定]ボタンをインアクティブにする */
CMShine(pcv->setBtnHdl, C_INACTIVE);
/* [実行]ボタンをインアクティブにする */
CMShine(pcv->execBtnHdl, C_INACTIVE);
/* [中止]ボタンをアクティブにする */
CMShine(pcv->canBtnHdl, C_ACTIVE);
lastGraph = GMGetGraph(); /* カレントグラフを退避する */
/* プリンタドライバへ印刷文字列を転送する */
PMDrawString(pcv->printHdl, pcv->prnStrHdl, pcv->fileLen, 0);
pcv->printFlag = TRUE; /* 印刷中フラグをセットする */
GMSetGraph(lastGraph); /* カレントグラフを元に戻す */
addUpdate(&rcPart); /* メッセージを書き換える */
return TRUE; /* 成功したのでTRUEを返す */
}
/******************************************************************************
* timeOut(): 印刷待ちで時間切れ
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void timeOut(ComVal *pcv)
{
int num;
num = DMError(D_CONT, "プリンタの準備ができていません。");
if (num == 1) /* [継続]ボタンが押されたか? */
PMAction(P_CONT); /* 印刷を再開する */
else {
PMAction(P_END); /* 印刷を終了する */
endPrint(pcv); /* 印刷の終了手続きを行う */
}
}
/******************************************************************************
* endPrint(): 印刷の終了手続き
******************************************************************************
* 引数: ComVal *pcv 共通変数へのポインタ
*/
void endPrint(ComVal *pcv)
{
MMHdlDispose(pcv->prnStrHdl); /* 印刷文字列用ハンドルを解放する */
pcv->prnStrHdl = NULL; /* ハンドルをクリアする */
PMClose(); /* プリンタドライバをクローズする */
pcv->printFlag = FALSE; /* 印刷中フラグをクリアする */
pcv->loadFlag = FALSE; /* 読み込み済フラグをクリアする */
/* [印刷環境設定]ボタンをアクティブにする */
CMShine(pcv->setBtnHdl, C_ACTIVE);
/* [実行]ボタンをアクティブにする */
CMShine(pcv->execBtnHdl, C_ACTIVE);
/* [中止]ボタンをインアクティブにする */
CMShine(pcv->canBtnHdl, C_INACTIVE);
addUpdate(&rcPart); /* メッセージを書き換える */
}